package com.lej.app_main.launcher

import android.os.Bundle
import android.text.SpannableStringBuilder
import androidx.appcompat.app.AppCompatActivity
import com.bun.miitmdid.core.MdidSdkHelper
import com.lej.app_main.R
import com.lej.app_main.webJs.HomeJavascriptInterface
import com.lej.core.base.app
import com.lej.core.common.PCacheInfo
import com.lej.core.common.userIsLogin
import com.lej.core.router.CRouter
import com.lej.core.utils.extention.*
import com.lej.core.webView.jsInstances
import com.lej.dataservice.club.http.base.HttpUrl
import com.lej.theme.dialog.CommonDialog
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog

class LauncherActivity : AppCompatActivity() {
    private var dialog: QMUITipDialog? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        jsInstances.add(::HomeJavascriptInterface)
    }

    override fun onStart() {
        super.onStart()
        checkPerStatus()
    }

    private fun checkPerStatus() {
        if (PCacheInfo.agreePermission > 0) {
            toHome()
            return
        }
        if (dialog?.isShowing == true) return
        val content =
            SpannableStringBuilder("欢迎来到大有空间！我们深知个人信息对你的重要性，为了更好的保护你的权益，同时遵守相关法律法规和监管要求，我们将通过")
                .append("《大有服务协议》".textLinkClick(color = R.color.launcherCol) { toLink(HttpUrl.USER_AGREEMENT_URL) })
                .append("&")
                .append("《大有隐私协议》".textLinkClick(color = R.color.launcherCol) { toLink(HttpUrl.PERMISSION_URL) })
                .append("&")
                .append("《大有应用权限说明》".textLinkClick(color = R.color.launcherCol) { toLink(HttpUrl.TRANSFORM_test1_URL) })
                .append("向你说明我们如何收集、存储、使用、保护及对外提供你的信息，要点如下：\n\n")

                .append("\u3000\u30001. 为了保障大有空间App稳定运行或提供服务，大有空间App需要向你申请必要的手机权限，包括读取电话状态权限（用于识别设备以便完成完全风控）、存储权限（用于下载及缓存相关文件）以及隐私权政策中所列举的其他使用具体功能时所需申请的权限类型。当你开启权限后，大有空间App才会收集必要的信息。\n\n")

                .append("\u3000\u30002. 为采取风险防范措施保障你的账户及资金安全，并依法履行实名制管理等法定义务，我们需要在必要范围内手机你的身份基本信息、账户信息、交易信息以及设备信息。\n\n")
                .append("更多详情，请点击查阅")
                .append("《大有服务协议》".textLinkClick(color = R.color.launcherCol) { toLink(HttpUrl.USER_AGREEMENT_URL) })
                .append("&")
                .append("《大有隐私协议》".textLinkClick(color = R.color.launcherCol) { toLink(HttpUrl.PERMISSION_URL) })
                .append("&")
                .append("《大有应用权限说明》".textLinkClick(color = R.color.launcherCol) { toLink(HttpUrl.TRANSFORM_test1_URL) })
                .append("全文")

        dialog = CommonDialog(this).showCommonDialog(
            title = "隐私保护提示",
            longContent = content,
            cancelText = "不同意",
            confirmText = "同意",
            showClose = false,
            hasClose = false,
            cancel = {
                finish()
            }) {
            getOaid()
            updatePerStatus()
            app.privacyInit()
            toHome()
        }

//        dialog = XPopup.Builder(this)
//            .dismissOnBackPressed(false)
//            .hasStatusBar(false)
//            .hasBlurBg(true)
//            .dismissOnTouchOutside(false)
//            .asCustom(object : CenterPopupView(this) {
//                override fun getImplLayoutId() = R.layout.appmain_permission_dialog
//
//                override fun initPopupContent() {
//                    super.initPopupContent()
//                    findViewById<TextView>(R.id.tv_content).apply {
//                        movementMethod = LinkMovementMethod.getInstance()
//                        text = content
//                    }
//                    findViewById<View>(R.id.btn_negative).onClick {
//                        finish()
//                    }
//                    findViewById<TextView>(R.id.btn_positive)?.onClick {
//                        updatePerStatus()
//                        app.privacyInit()
//                        toHome()
//                    }
//                }
//
//                override fun getMaxWidth() = XPopupUtils.getWindowWidth(context)
//            })
//            .show()
    }

    override fun finish() {
        super.finish()
        overridePendingTransition(0, 0)
    }

    private fun getOaid(){
        ///初始化 oaid
        "初始化OAID".logI("OAID")
        val res = MdidSdkHelper.InitSdk(application, true) { p0, idSupplier ->
            "获取到OAID:${idSupplier.oaid}".logI("OAID")
            if (idSupplier.isSupported) PCacheInfo.oaid = idSupplier.oaid ?: ""
        }

        when (res) {
            1008611 -> "不支持的厂商".logI("OAID")
            1008612 -> "不支持的设备".logI("OAID")
            1008613 -> "加载配置文件失败".logI("OAID")
            1008614 -> "信息将会延迟返回，获取数据可能在异步线程，取决于设备".logI("OAID")
            1008615 -> "反射调用失败".logI("OAID")
            1008616 -> "配置文件不匹配".logI("OAID")
            else -> "没返回错误信息吧${res}".logI("OAID")
        }
    }

    private fun toHome() {
        router(if (userIsLogin()) CRouter.newMain else CRouter.login) { addClearFlag() }
    }

    /**
     * 更新权限状态值
     * 0-没有授权
     */
    private fun updatePerStatus() {
        PCacheInfo.agreePermission = 1
    }
}